In the past, video applications were transmitted at a constant bit rate. Accordingly, most video sequences are coded using a constant bit rate (CBR) mode. This is especially true when using the conventional MPEG (Moving Picture Experts Group) transport infrastructure. However, today, in order to improve the coding efficiency for elementary streams, many video sequences are coded using a variable bit rate (VBR) mode. Consequently, many video applications are not transmitted at a constant bit rate. For example, some video applications are streamed through the Internet, which results in varying transmission rates due to various network paths (e.g., modem, ISDN, DSL, cable) and network conditions (e.g., number of users, congestion). Even in the broadcast environment (e.g., cable, satellite, terrestrial) where the channel rate is fixed, elementary streams may be transported at varying bit rates to better utilize the channel by statistical multiplexing of multiple elementary streams. In addition to the various transmission rates, the video applications are transmitted to a variety of devices, each having their own specifications for buffer size, delay constraints, and the like. For example, video applications may be transmitted to personal digital assistants (PDAs), personal computers (PCs), set-top-boxes, DVD-like players, and the like.
In order to provide the correct motion rendition and certain level of quality fidelity, bit-rate variations are smoothed using buffering mechanisms that ensure no overflow or underflow of the decoder buffers. One way in which decoder buffers can be ensured not to overflow or underflow is by adjusting the rate of data delivery of the channel. However, as mentioned above, either the channel rate is fixed (e.g. broadcast environment) or the channel rate is not controllable (e.g. over the Internet). Thus, the rate of data delivery is not easily adjustable for handling the data rate of elementary streams that are time-varying. Therefore, decoders in broadcast receivers slave their timing to the data received from the channel. The channel transports packets that have a packet header followed by a number of contiguous bytes of an elementary stream. The headers specify intended times at which the video/audio information in the elementary stream is to be decoded and to be presented by the decoder. These specified times then serve as a reference for clock correction and buffer management. While the decoders do not have to follow the specified times exactly, they must compensate for any deviations.
A common coding syntax has been recommended that synchronizes the decoding and presentation of the video and audio information to ensure that decoder buffers do not overflow or underflow. This common coding syntax is specified by MPEG (Moving Picture Experts Group) working group of the ISO. MPEG specifies performance parameters for the video applications. Video applications that adhere to these standards can then operate over the MPEG transport infrastructure.
Because the MPEG standard does not specify the architecture or implementation of encoders or decoders, a considerable degree of freedom exists in the design and implementation of encoders and decoders. Therefore, continuous improvements are made to and encouraged in the implementations of encoders and decoders.